package cn.zshprint.serein.service;

import cn.zshprint.serein.entity.User;
import cn.zshprint.serein.vo.LoginVO;
import cn.zshprint.serein.vo.UserRegisterVO;
import cn.zshprint.serein.vo.UserReturnVO;
import com.baomidou.mybatisplus.extension.service.IService;

import java.security.NoSuchAlgorithmException;
import java.security.spec.InvalidKeySpecException;
import java.util.List;

/**
 * 用户服务
 *
 * @author zshprint
 * @date 2021/07/28
 */
public interface UserService extends IService<User> {

    /**
     * 注册
     *
     * @param userRegisterVO 用户注册签证官
     * @return {@link Integer}
     */
    Integer register(UserRegisterVO userRegisterVO,String type) throws NoSuchAlgorithmException, InvalidKeySpecException;

    /**
     * 更新用户
     *
     * @param userUpdateVO 用户更新签证官
     * @return {@link User}
     */
    User updateUser(User userUpdateVO);

    /**
     * 删除用户
     *
     * @param id id
     * @return {@link Integer}
     */
    Integer deleteUser(Integer id);

    /**
     * 登录
     *
     * @param loginVO 登录签证官
     * @return {@link UserReturnVO}
     * @throws NoSuchAlgorithmException 没有这样的算法异常
     * @throws InvalidKeySpecException  无效的关键规范异常
     */
    UserReturnVO login(LoginVO loginVO) throws NoSuchAlgorithmException, InvalidKeySpecException;


    /**
     * 得到一个用户名
     *
     * @param username 用户名
     * @return {@link UserReturnVO}
     */
    UserReturnVO getOneByUsername(String username);


    /**
     * 找到所有
     *
     * @return {@link List<UserReturnVO>}
     */
    List<UserReturnVO> findAll();

    /**
     * 通过id获取一个
     *
     * @param id id
     * @return {@link UserReturnVO}
     */
    UserReturnVO getOneById(Integer id);

}
